package com.qingcloud.adminbackend.provider.fusion;


import com.alibaba.fastjson.JSONObject;
import com.qingcloud.base.api.remote.datafusion.DatafusionApi;
import com.qingcloud.base.pojo.ApiResult;
import com.qingcloud.base.remote.datafusion.SourceInfo;
import org.springframework.stereotype.Component;

import javax.annotation.Resource;
import java.util.List;

/**
 * 组件源码请求帮助类
 *
 * @author yangfan
 * @since 2021/11/8 13:19
 */
@Component
public class DataFusionApiHelper {
    @Resource
    private DatafusionApi datafusionApi;

    /**
     * 调用融合平台 保存或者修改源码信息
     * productSourceId为空则新增 不为空则修改
     *
     * @param productSourceId 产品源码id
     * @param source          源码
     * @return 返回结果
     */
    public ApiResult saveSource(Integer productSourceId, String source) {
        SourceInfo sourceInfo = new SourceInfo();
        sourceInfo.setSource(source);
        sourceInfo.setLanguageType(1);
        sourceInfo.setFileType(1);
        sourceInfo.setPubState(1);
        sourceInfo.setState(0);
        sourceInfo.setId(productSourceId);
        ApiResult apiResult = datafusionApi.saveSource(sourceInfo);
        return apiResult;

    }

    /**
     * 通过源码id列表查询源码信息
     *
     * @param sourceIdList 源码id列表
     * @return 查询结果
     */
    public ApiResult findSourcesBySourceId(List<Integer> sourceIdList) {
        ApiResult apiResult = datafusionApi.findSourcesById(sourceIdList);
        return apiResult;
    }

    /**
     * 根据id删除源码信息
     *
     * @param sourceIds 源码id列表
     * @return 删除结果
     */
    public ApiResult deleteBySourceId(List<Integer> sourceIds) {
        ApiResult apiResult = datafusionApi.deleteBySourceId(sourceIds);
        return apiResult;
    }

    /**
     * 解码器组件分页查询
     *
     * @param name     名称模糊
     * @param page     页码，从1开始
     * @param pageSize 每页数量
     */
    public String pageComponentDecoders(String name, Integer page, Integer pageSize) {
        ApiResult apiResult = datafusionApi.findDecoderComponent(name, page, pageSize);
        if (apiResult.isSuccessful()) {
            return JSONObject.toJSONString(apiResult.getResult());
        }
        return "";
    }

    /**
     * 查询组件实例信息
     */
    public JSONObject findComponentInstance(Integer instanceId) {
        ApiResult apiResult = datafusionApi.findInstanceById(instanceId);
        if (apiResult.isSuccessful()) {
            return JSONObject.parseObject(JSONObject.toJSONString(apiResult.getResult()));
        }
        return null;
    }
}
